Make GTK_JUSTIFY_FILL work, using pango_layout_set_justify() that works
authorBehdad Esfahbod <behdad@gnome.org>
Fri, 4 May 2007 00:24:46 +0000 (00:24 +0000)
committerBehdad Esfahbod <behdad@src.gnome.org>
Fri, 4 May 2007 00:24:46 +0000 (00:24 +0000)
2007-05-03  Behdad Esfahbod  <behdad@gnome.org>

        * gtk/gtklabel.c (gtk_label_ensure_layout):
        * gtk/gtktextlayout.c (set_para_values): Make GTK_JUSTIFY_FILL work,
        using pango_layout_set_justify() that works now. (#435675)

svn path=/trunk/; revision=17790

ChangeLog
gtk/gtklabel.c
gtk/gtktextlayout.c

index ee2cc7f81a8d75188dda163637b6b86d47e75359..22b57dccd75e2e8595feb9539026405f83f6c9c0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-05-03  Behdad Esfahbod  <behdad@gnome.org>
+
+       * gtk/gtklabel.c (gtk_label_ensure_layout):
+       * gtk/gtktextlayout.c (set_para_values): Make GTK_JUSTIFY_FILL work,
+       using pango_layout_set_justify() that works now. (#435675)
+
 2007-05-03  Emmanuele Bassi  <ebassi@gnome.org>
 
        * gtk/gtksearchenginesimple.c (search_engine_simple_finalize): Remove
index aa2ef089bfaf71e275d6cbeec251d20b7fb38bd8..0cf9cf739941d4d0492ec92d8cc0fc6a5895ae00 100644 (file)
@@ -2024,7 +2024,6 @@ gtk_label_ensure_layout (GtkLabel *label)
          align = PANGO_ALIGN_CENTER;
          break;
        case GTK_JUSTIFY_FILL:
-         /* FIXME: This just doesn't work to do this */
          align = rtl ? PANGO_ALIGN_RIGHT : PANGO_ALIGN_LEFT;
          pango_layout_set_justify (label->layout, TRUE);
          break;
index ae4be03e546573b5b5ad109403d1be1fd1aa3a8a..553434a0765945cbac0a79ae91d7b31d6f8fd3ef 100644 (file)
@@ -1201,7 +1201,7 @@ set_para_values (GtkTextLayout      *layout,
                  GtkTextLineDisplay *display)
 {
   PangoAlignment pango_align = PANGO_ALIGN_LEFT;
-  int layout_width;
+  PangoWrapMode pango_wrap = PANGO_WRAP_WORD;
 
   switch (base_dir)
     {
@@ -1241,7 +1241,8 @@ set_para_values (GtkTextLayout      *layout,
       pango_align = PANGO_ALIGN_CENTER;
       break;
     case GTK_JUSTIFY_FILL:
-      g_warning ("FIXME we don't support GTK_JUSTIFY_FILL yet");
+      pango_align = (base_dir == PANGO_DIRECTION_LTR) ? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT;
+      pango_layout_set_justify (display->layout, TRUE);
       break;
     default:
       g_assert_not_reached ();
@@ -1269,26 +1270,27 @@ set_para_values (GtkTextLayout      *layout,
   switch (style->wrap_mode)
     {
     case GTK_WRAP_CHAR:
-      layout_width = layout->screen_width - display->left_margin - display->right_margin;
-      pango_layout_set_width (display->layout, layout_width * PANGO_SCALE);
-      pango_layout_set_wrap (display->layout, PANGO_WRAP_CHAR);
+      pango_wrap = PANGO_WRAP_CHAR;
       break;
     case GTK_WRAP_WORD:
-      layout_width = layout->screen_width - display->left_margin - display->right_margin;
-      pango_layout_set_width (display->layout, layout_width * PANGO_SCALE);
-      pango_layout_set_wrap (display->layout, PANGO_WRAP_WORD);
+      pango_wrap = PANGO_WRAP_WORD;
       break;
 
     case GTK_WRAP_WORD_CHAR:
-      layout_width = layout->screen_width - display->left_margin - display->right_margin;
-      pango_layout_set_width (display->layout, layout_width * PANGO_SCALE);
-      pango_layout_set_wrap (display->layout, PANGO_WRAP_WORD_CHAR);
+      pango_wrap = PANGO_WRAP_WORD_CHAR;
       break;
 
     case GTK_WRAP_NONE:
       break;
     }
 
+  if (style->wrap_mode != GTK_WRAP_NONE)
+    {
+      int layout_width = (layout->screen_width - display->left_margin - display->right_margin);
+      pango_layout_set_width (display->layout, layout_width * PANGO_SCALE);
+      pango_layout_set_wrap (display->layout, pango_wrap);
+    }
+
   display->total_width = MAX (layout->screen_width, layout->width) - display->left_margin - display->right_margin;
   
   if (style->pg_bg_color)